User Guide

MIDI API Mode Switcher

This tool lets you switch the MIDI stack Windows uses without editing the registry by hand. This guide covers how to use it and — most importantly — how to confirm the switch actually took effect.

1. What this tool is

Windows 11 ships with a new MIDI stack called Windows MIDI Services. For compatibility, Microsoft included a switch that lets users fall back to the legacy MIDI implementation. That switch is a single value in the registry, and Microsoft's official guide asks users to add it by hand using regedit.exe.

This tool does exactly the same thing, but removes the opportunities for mistakes — it writes to the correct key, uses the correct data type, only accepts valid values, and reminds you to restart when it's done.

Make sure you actually need to switch

Most machines should stay on the default Mode 0. You only need to switch to Mode 1 if your device belongs to one of the known problem categories: inMusic hardware (AKAI, Rane, etc.), or older Hercules DJ controllers (which use the deprecated DirectMusic driver).

If your MIDI devices are working fine, switching to Mode 1 will only cost you features — you gain nothing.

2. Which mode to pick

Mode 0 — Full Windows MIDI Services (recommended)

The Windows default. Supports multi-client access (the same MIDI port can be opened by multiple applications at the same time), MIDI loopback virtual ports, Network MIDI 2.0, and native mode for MIDI 2.0 devices.

When to use it: Almost always. Unless you have a specific reason to change it, stay on this mode.

Mode 1 — Legacy MIDI (compatibility mode)

Reverts to the pre-Windows MIDI Services stack, with the same limitations as before. You lose multi-client access, loopback ports, and native mode for MIDI 2.0 devices.

When to use it: Only when inMusic hardware (AKAI, Rane) or older Hercules DJ controllers are misbehaving.

Mode 2 — Hybrid (not recommended)

The new and old drivers cannot see each other's devices, so which ports show up depends on which application you use and which driver each device is on. The result is unpredictable and hard to debug.

When to use it: For diagnostics only. Don't leave a machine on this mode long-term.

3. How to use it

The MIDI API Mode Switcher main window, showing current status, the three mode options, the notes callout, and the detected MIDI ports
The tool's main window. The button in the top-right corner switches between Traditional Chinese and English.
  1. Launch MidiApiModeSwitcher.exe

    Just double-click it. Launching does not trigger a User Account Control (UAC) prompt, so you can safely check the current status without any elevated permissions.

  2. Read the "Current Status" box

    The box at the top shows the current mode, the registry value, the MIDI service status, and whether the new MIDI stack is installed. Look at it before you switch, so you know what changed afterwards.

  3. Pick the mode you want to switch to

    Click Mode 0, Mode 1, or Mode 2. The colored block below updates in real time with notes about that mode — green means recommended, orange means it has caveats, red means diagnostics only.

  4. Click "Apply Changes"

    A confirmation dialog appears first; only after you confirm will the UAC prompt ask for administrator rights. This is the only step in the whole flow that requires elevation. If you click "No" on the UAC prompt, the tool returns quietly without making any change.

  5. When the reminder dialog appears, click "OK"

    Once the write succeeds, a small dialog will pop up to remind you that the change is not yet in effect and that a restart is required.

    Reminder dialog titled
    This dialog is just a reminder — its only button is "OK".

    Clicking "OK" only closes the dialog and does nothing else. This tool does not restart your computer for you, so any unsaved work is safe.

  6. Restart the computer yourself

    Save your work first, then restart Windows yourself. Without a restart the setting will not take effect — there is no workaround; see the next section.

    After you dismiss the reminder, the main window keeps showing "change saved, not yet in effect" in orange until you restart, so you won't forget.

4. How to confirm the switch worked

The key idea

"The setting is written" and "the setting is in effect" are two different things. Clicking "Apply Changes" only accomplishes the first one; the second only happens after a restart.

Almost every "I changed it and nothing happened" report we see comes from confusing these two — someone sees the registry value change and assumes the switch is already live.

Stage 1 · Before restart

The setting is written

Immediately after you apply — no restart needed — the tool's "Registry value" line changes to UseLegacyMidi = 1.

That means the setting is stored in the system, but MIDI behavior has not changed at all yet. The main window keeps flagging this state in orange.

Stage 2 · After restart

The setting is in effect

After restarting, open the tool again and look at the "MIDI service" line. That line is the real answer.

It tells you directly whether the mode is in effect — no interpretation needed on your part.

What the main window looks like after applying, before restarting

After you close the reminder dialog with "OK", the main window keeps reminding you that a restart is still pending:

The Current Status box in the pending-restart state; the Current mode line is shown in orange with the note
"Current mode" gains a "(takes effect after restart)" suffix and turns orange, and an orange banner appears in the middle of the window. This state persists until you restart.
This view shows the stored setting, not the active mode

At this point "Current mode" is reading the value that was just written to the registry — it does not mean the system is actually using that mode yet. Real confirmation has to wait until after a restart, using Method 1 below.

Method 1: Confirm with the tool itself (easiest — recommend this to customers)

After restarting, run MidiApiModeSwitcher.exe again and look at the "Current Status" box at the top:

The tool's Current Status box, with four lines: Current mode, Registry value, MIDI service, and MIDI Services
The "Current Status" box. The third line, "MIDI service", is the key indicator of whether the mode is in effect — its text color changes to match the situation.

Before it reads the service status, the tool enumerates the MIDI ports once via the MIDI 1.0 API. This is exactly the check Microsoft's official documentation recommends — "run a MIDI 1.0 application, then check whether midisrv is running". So the color of this line has a specific meaning:

Current mode "MIDI service" shows Conclusion
Mode 0 Running — new stack in use Normal. The new MIDI stack is running — this is the default state.
Mode 1 or 2 Stopped — legacy mode confirmed Switch succeeded. Legacy mode is genuinely active.
Mode 1 or 2 Running — abnormal, mode not in effect The switch has not taken effect. The setting was written, but the new stack is still running. It is almost always one of the two causes below — see Troubleshooting.
Why this line is so reliable

Under Mode 0, any MIDI application that calls a MIDI API goes through wdmaud2.drv, which starts the midisrv service. Under Legacy mode, the call goes through the old wdmaud.drv and never touches that service. So "the service is still stopped after MIDI ports have been enumerated" is direct evidence that the legacy stack is running.

Method 2: Confirm with PowerShell commands

If you want to verify it yourself, or you're walking a customer through it remotely, open PowerShell and run:

# Currently stored mode (no output = not set = Mode 0)
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32').UseLegacyMidi

# Current state of the MIDI service
Get-Service midisrv | Select-Object Name, Status

The first line tells you what the setting says; the second tells you what is actually running. You have to read them together:

First-line output Second-line output Meaning
(blank) or 0 Running or Stopped Mode 0. The service starts on demand; either state is normal.
1 Stopped Legacy mode is in effect.
1 Running The setting is written but not yet in effect — usually a missing restart.
The order you run things affects the result

If you check the service status before opening any MIDI application, even Mode 0 can show Stopped — the service starts on demand and simply hasn't been triggered yet.

For this check to mean anything, open a MIDI application first (or just run this tool, which enumerates the MIDI ports automatically), then check the service status.

Method 3: Look at the registry directly

Open regedit.exe and paste this path into the address bar:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32

Look for UseLegacyMidi on the right. This method only confirms what the setting is; it cannot confirm whether it is in effect. Use it only to rule out "the value never got written".

Watch out for two keys with the same name

64-bit Windows also has HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Drivers32, which looks almost identical but is only used by 32-bit applications. If you jump to it via regedit's "Find" feature, you may well land on the wrong one. Confirm that the path does not contain WOW6432Node.

This tool always writes to the correct key, so it never runs into this problem.

Method 4: Judge by actual behavior

After switching to Mode 1, you should observe the following changes. If none of them happened, the mode is not yet in effect:

ItemMode 0Mode 1 (in effect)
Same MIDI port opened by multiple applications Works Fails — the second application cannot open it
MIDI loopback virtual ports Visible Gone
MIDI 2.0 devices Run in native 2.0 mode Drop back to 1.0 mode
Port names New-style names Revert to legacy names (may be truncated to 32 characters)

5. Troubleshooting

The tool shows "Running — abnormal, mode not in effect"

This is the most common situation, and it has exactly two causes:

Cause 1: The computer wasn't restarted

The setting is only read once, at boot time, when the audio/MIDI subsystem initializes and picks which driver shim to load. Once that decision is made it's locked in — changing the registry afterwards will not swap out the modules that are already loaded. Restart the computer.

Note in particular: clicking "OK" on the reminder dialog does not restart the computer — this tool intentionally does not restart for you; the restart is on you.

Cause 2: MIDI Console or MIDI Settings was opened after the restart

Those two tools force-start the midisrv service, which cancels out the Legacy switch you just made.

While you are in Legacy mode, do not open MIDI Console, do not open MIDI Settings, and do not run midicheckservice. If you already did, a restart will restore things.

MIDI devices disappeared after switching

First, confirm you actually switched to Mode 1 and not Mode 2. Under Mode 2 (Hybrid) the new and old drivers can't see each other's devices, so ports come and go depending on the application — this is the expected behavior of that mode, not a bug. Switch back to Mode 0 or Mode 1.

If a device is missing under Mode 1, check whether another application is already holding that port open. Legacy mode has no multi-client support: one port can only be opened by one application at a time.

"Windows protected your PC" appears when I launch it

That's SmartScreen warning you about an unsigned program. Click "More info" → "Run anyway" to continue. If you obtained this tool from an official source, this warning does not mean the file is bad.

I clicked "Apply Changes" and nothing happened

Check that you clicked "Yes" on the UAC prompt. If you clicked "No", the tool returns quietly, changes nothing, and does not show an error message — that is intentional, so as not to alarm users. Click "Apply Changes" again to retry.

How to get all the way back to factory settings

Pick Mode 0 and apply. The tool removes the UseLegacyMidi value outright instead of writing it as 0 — both are functionally identical, but removing it returns the machine to a factory-clean state. A restart is still required.

6. For support agents: the diagnostic report

The "Copy diagnostic info" button at the bottom of the tool copies the full system state to the clipboard. Have the customer click it and paste the result straight into the support ticket — that beats ten rounds of clarifying questions.

=== MIDI API Mode Diagnostics ===
Machine        : DESKTOP-XXXXXXX
OS             : Windows 11 Home 25H2 (build 26200.8973)
Registry path  : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
UseLegacyMidi  : (not set)
Effective mode : 0 (Full Windows MIDI Services)
midisrv        : Running
Drivers32 midi : wdmaud.drv
Drivers32 midi1: wdmaud2.drv
MIDI Services  : installed, in use
Elevated       : no

MIDI inputs (0):
  (none)

MIDI outputs (1):
  [0] Microsoft GS Wavetable Synth

How to read this report

FieldWhat to look at
UseLegacyMidi What the customer configured. (not set) is equivalent to Mode 0.
midisrv What is actually running. Read it together with the row above: configured as 1 but this shows Running ⇒ not yet in effect.
Drivers32 midi1 The driver shim currently loaded. Under Mode 0 this is wdmaud2.drv; after switching to Legacy, Windows rewrites it to wdmaud.drv itself at boot. Both are normal — this field tells you which stack is currently in use, not what is installed.
MIDI Services Whether the new stack is installed on this machine.
installed, in use = installed and running (Mode 0).
installed, standing by = installed but running Legacy right now — this is a normal state.
not installed ⇒ Windows MIDI Services is not present on this machine; ask the customer to update Windows first.
MIDI inputs / outputs Whether the customer's devices are visible to the system. If the customer says "the computer can't see my keyboard" and the device really isn't listed here, the problem is in the driver, USB connection, or hardware — not the API mode.
Triage advice

When a report comes in, first check whether the customer's device appears in the MIDI inputs / outputs list. If the device isn't listed at all, switching the API mode will not fix the problem — that's a driver, USB connection, or hardware issue and should be investigated as such.

The API mode is only the right lever when the device is visible but multi-open, naming, or MIDI 2.0 behavior is off.